Serverless FrameworkでLambdaをPython 3.6で使ってみた
こんにちは、臼田です。
みなさんLambdaしてますか?
今回は、Serverless FrameworkからPython 3.6のLambdaを利用してみます。
Serverless Framework自体の使い方については下記をご参照ください。
Serverless Frameworkのインストール
Serverless Frameworkでは1.12.0のバージョンからPython 3.6のLambdaに対応しているようです。
https://github.com/serverless/serverless/releases/tag/v1.12.0
古い場合には、新しくインストールし直しましょう。
$ npm uninstall serverless -g unbuild [email protected] $ npm install serverless -g $ sls -v 1.17.0
2017/07/07現在では1.17.0でインストールされました。
サービスの作成
それでは作成していきます。
Python 3.6のテンプレート名は「aws-python3」と指定します。
$ sls create -t aws-python3 -p py3test Serverless: Generating boilerplate... Serverless: Generating boilerplate in "/Users/xxxxxxxx/py3test" _______ __ | _ .-----.----.--.--.-----.----| .-----.-----.-----. | |___| -__| _| | | -__| _| | -__|__ --|__ --| |____ |_____|__| \___/|_____|__| |__|_____|_____|_____| | | | The Serverless Application Framework | | serverless.com, v1.17.0 -------' Serverless: Successfully generated boilerplate for template: "aws-python3" $ cd py3test/ $ ls handler.py serverless.yml
無事作成されました。
deployしてみる
早速deployします。
$ sls deploy -v Serverless: Packaging service... Serverless: Creating Stack... Serverless: Checking Stack create progress... CloudFormation - CREATE_IN_PROGRESS - AWS::CloudFormation::Stack - py3test-dev CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket CloudFormation - CREATE_IN_PROGRESS - AWS::S3::Bucket - ServerlessDeploymentBucket CloudFormation - CREATE_COMPLETE - AWS::S3::Bucket - ServerlessDeploymentBucket CloudFormation - CREATE_COMPLETE - AWS::CloudFormation::Stack - py3test-dev Serverless: Stack create finished... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading artifacts... Serverless: Uploading service .zip file to S3 (387 B)... Serverless: Validating template... Serverless: Updating Stack... Serverless: Checking Stack update progress... CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - py3test-dev CloudFormation - CREATE_IN_PROGRESS - AWS::IAM::Role - IamRoleLambdaExecution CloudFormation - CREATE_IN_PROGRESS - AWS::Logs::LogGroup - HelloLogGroup CloudFormation - CREATE_IN_PROGRESS - AWS::IAM::Role - IamRoleLambdaExecution CloudFormation - CREATE_IN_PROGRESS - AWS::Logs::LogGroup - HelloLogGroup CloudFormation - CREATE_COMPLETE - AWS::Logs::LogGroup - HelloLogGroup CloudFormation - CREATE_COMPLETE - AWS::IAM::Role - IamRoleLambdaExecution CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - CREATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - HelloLambdaVersionHWLEieddo07V14GsF2RBO2dLDZNAIFWtjjffo8S843I CloudFormation - CREATE_IN_PROGRESS - AWS::Lambda::Version - HelloLambdaVersionHWLEieddo07V14GsF2RBO2dLDZNAIFWtjjffo8S843I CloudFormation - CREATE_COMPLETE - AWS::Lambda::Version - HelloLambdaVersionHWLEieddo07V14GsF2RBO2dLDZNAIFWtjjffo8S843I CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - py3test-dev CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - py3test-dev Serverless: Stack update finished... Service Information service: py3test stage: dev region: us-east-1 api keys: None endpoints: None functions: hello: py3test-dev-hello Stack Outputs HelloLambdaFunctionQualifiedArn: arn:aws:lambda:us-east-1:000000000000:function:py3test-dev-hello:1 ServerlessDeploymentBucketName: py3test-dev-serverlessdeploymentbucket-459r6dem702c
無事deploy出来ました。
確認してみる
きちんとPython 3.6でdeployされているかマネジメントコンソールで確認します。
ランタイムがPython 3.6となっていました。
実行してみる
実行してみます。
sls invoke -f hello { "statusCode": 200, "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}" }
無事実行できました。
さいごに
Serverless Frameworkを使えばPython 3.6になっても簡単にLambdaを利用できました。
今後、Serverless Frameworkのプラグインについても、Python 3.6の対応状況を確認していきます。